package com.zqxq.common.utils;

public class PasswordUtil {
    public static int strength=0;       //密码强度计数
    public static String correctPart="_@#$!";      //密码中合法字符

    /**
     * 1、用户名最多25个字符长度、不能包含空格、单双引号、问号等特殊符号
     * @param userName
     * @return
     */
    public static boolean iscotteUserName(String userName){
        boolean isCorrect=true;
        if(userName==null||userName.length()>25)return false;
        String unValidString=" \"'?><,";        //非法字符串
        for (char ch : unValidString.toCharArray()) {
            if(userName.contains(Character.toString(ch)))return false;
        }
        return isCorrect;
    }
    /**
     * 2、密码6-8位，只能包含字母、数字、特殊符号（_、@、#、$、！）
     * 纯数字、纯字母时，密码强度为弱（★★☆☆☆☆）
     * 字母+符号、数字+符号、数字+字母，强度为中（★★★★☆☆）
     * 同时存在三种字符，强度为强（★★★★★★）
     * @param passWord
     * @return
     */
    public static String validatePassWord(String passWord){
        StringBuilder power=new StringBuilder();    //密码强度，如果返回为"",那么验证失败，验证成功，则返回星号表示密码强度
        if(passWord==null||passWord.length()<6||passWord.length()>8)return power.toString();
        for (char ch : passWord.toCharArray()){
            //如果此字符不是数字或字母
            if(!Character.isLetterOrDigit(ch)){
                //如果此字符也不是合法符号，则返回密码强度为""
                if(!correctPart.contains(Character.toString(ch)))return power.toString();
            }
        }
        isStrength(passWord);
        for (int i = 1; i < 4; i++) {
            if(i<=strength){
                power.append(String.valueOf("★★"));
            }
            else{
                power.append(String.valueOf("☆☆"));
            }
        }
        return power.toString();
    }
    /**
     * 判断密码强度
     * @param passWord
     * @return
     */
    private static void isStrength(String passWord){
        for (char ch : passWord.toCharArray()) {    //判断是否包含数字
            if(Character.isDigit(ch)){
                strength++;
                break;
            }
        }
        for (char ch : passWord.toCharArray()) {    //判断是否包含字母
            if(Character.isLetter(ch)){
                strength++;
                break;
            }
        }
        for (char ch : passWord.toCharArray()) {    //判断是否包含合法符号
            if(correctPart.contains(Character.toString(ch))){
                strength++;
                break;
            }
        }
    }
    public static void main(String[] args) {
        String a = validatePassWord("");
        System.out.println("密码："+a);
    }
}
